home *** CD-ROM | disk | FTP | other *** search
/ Quick PC 61 / Quick PC 61.iso / I386 / WMS.CAB / Networking.asp < prev    next >
Encoding:
Text File  |  2003-02-21  |  19.8 KB  |  538 lines

  1. ∩╗┐<%@ Language=VBScript CODEPAGE=65001 %>
  2. <!--#include file="include/wmsLocStrings.inc"-->
  3. <!--#include file="include/wmsCommon.inc"-->
  4. <!--#include file="include/wmsHeader.inc"-->
  5. <!--#include file="include/wmsPageBanner.inc"-->
  6. <!--#include file="include/wmsServerHash.inc"-->
  7. <!--#include file="include/wmsPlugins.inc"-->
  8. <!--#include file="include/wmsError.inc"-->
  9. <%
  10. '+-------------------------------------------------------------------------
  11. '
  12. '  Microsoft Windows Media
  13. '  Copyright (C) Microsoft Corporation. All rights reserved.
  14. '
  15. '  File:       Networking.asp
  16. '
  17. '  Contents:   Implements credentials and networking categories
  18. '
  19. '--------------------------------------------------------------------------
  20.  
  21. BeginErrorHandling
  22. ConnectToServer
  23. ConnectToPubPoint
  24.  
  25. Dim strOp
  26.  
  27. Dim strTitleString
  28. Dim strHelpString
  29. Dim dwDisplayMode
  30. Dim iPPindex
  31.  
  32. Dim bBufferOnServer
  33. Dim enumBufferSetting
  34.  
  35. bBufferOnServer = FALSE
  36. enumBufferSetting = 0
  37.  
  38. Dim strUserName
  39. Dim strPassword
  40. Dim strConfirm
  41.  
  42. Dim bFinished
  43. bFinished = FALSE
  44.  
  45. Const SHOWING_DISTCRED = 0
  46. Const SHOWING_BUFFERSETTING = 2
  47.  
  48. dwDisplayMode = SHOWING_DISTCRED
  49.  
  50. strUserName = Left( RemoveSpecifiedChars( SafeUnescape( trim( posting( "username" ) ) ), REGEXT_ILLEGAL_UNAME_CHARS ), MAX_USERNAME )
  51. strPassword = Left( RemoveDangerousCharacters( SafeUnescape( trim( posting( "password" ) ) ) ), MAX_PASSWD )
  52. strConfirm = Left( RemoveDangerousCharacters( SafeUnescape( trim( posting( "confirm" ) ) ) ), MAX_PASSWD )
  53.  
  54. strOp = GetPostOrQsVal("submit")
  55. if( 0 = Len( strOp ) ) then
  56.     strOp = trim( posting( "submit" ) )
  57. end if
  58.  
  59. if( 0 = StrComp( CAT_CRED, qs("category") ) ) then
  60.     dwDisplayMode = SHOWING_DISTCRED
  61.  
  62.     if ( 0 >= Len( strOp ) ) then
  63.         bFinished = FALSE
  64.         strUserName = g_objPubPoint.DistributionUserName
  65.         if( ( 0 < Len( strUserName ) ) and ( TRUE = g_objPubPoint.IsDistributionPasswordSet ) ) then
  66.             strPassword = L_PASSWORDPHOLD_TEXT
  67.             strConfirm = L_PASSWORDPHOLD_TEXT
  68.         else
  69.             strPassword = ""
  70.             strConfirm = ""
  71.         end if
  72.     else
  73.         err.clear
  74.         if( 0 < Len( strPassword ) ) then
  75.             if( DetectSpecifiedChars( strPassword, REGEXP_DANGEROUS_CHARS ) ) then
  76.                 Err.Raise( -2 )
  77.                 Err.Description = L_PASSWORDBADCHAR_TEXT
  78.                 ErrorDetected( "Password" )
  79.             elseif( 0 <> StrComp( strPassword, strConfirm, vbTextCompare ) ) then
  80.                 Err.Raise( -2 )
  81.                 Err.Description = L_PASSWORDMISMATCH_TEXT
  82.                 ErrorDetected( "Confirm" )
  83.             else
  84.                 if( 0 < Len( strUserName ) ) then
  85.                     if( DetectSpecifiedChars( strUserName, REGEXP_DANGEROUS_CHARS ) ) then
  86.                         Err.Raise( -2 )
  87.                         Err.Description = L_USERNAMEBADCHAR_TEXT
  88.                         ErrorDetected( "User" )
  89.                     elseif( ( MAX_USERNAME >= Len( strUserName ) ) and ( MAX_PASSWD >= Len( strPassword ) ) ) then
  90.                         s_WMSAdmin.SetPubPointCredentials g_objPubPoint, strUserName, strPassword
  91.                         if( ErrorDetected( "User" ) ) then
  92.                         end if
  93.                     end if
  94.                 elseif g_objPubPoint.IsDistributionPasswordSet then
  95.                     g_objPubPoint.DistributionPassword = CStr( "" )
  96.                 end if
  97.             end if
  98.         else
  99.             if( ( 0 = Len( strUserName ) ) and ( 0 = Len( strPassword ) ) and ( 0 = Len( strConfirm ) ) ) then
  100.                 s_WMSAdmin.SetPubPointCredentials g_objPubPoint, CStr( "" ), CStr( "" )
  101.             else
  102.                 ' Persist just the username-- no password
  103.                 err.Clear
  104.                 if( 0 = Len( strUserName ) ) then
  105.                     s_WMSAdmin.SetPubPointCredentials g_objPubPoint, CStr( "" ), CStr( "" )
  106.                 elseif( MAX_USERNAME >= Len( strUserName ) ) then
  107.                     s_WMSAdmin.SetPubPointCredentials g_objPubPoint, strUserName, CStr( "" )
  108.                 end if
  109.                 err.clear
  110.             end if
  111.             
  112.         end if
  113.         if FALSE = ErrorDetected( "Pass" ) then
  114.             bFinished = TRUE
  115.         end if
  116.     end if
  117. elseif( 0 = StrComp( L_BUFFERSETTING_TEXT, g_strDecodedInstance ) ) then
  118.     dwDisplayMode = SHOWING_BUFFERSETTING
  119.  
  120.     if( 0 < Len( trim( posting( "buffering" ) ) ) ) then
  121.         if( 0 = strComp( "1", trim( posting( "buffering" ) ) ) ) then
  122.             if( 1 <> g_objPubPoint.BufferSetting ) then
  123.                 g_objPubPoint.BufferSetting = 1
  124.             end if
  125.         else
  126.             if( 2 <> g_objPubPoint.BufferSetting ) then
  127.                 g_objPubPoint.BufferSetting = 2
  128.             end if
  129.         end if
  130.         
  131.         bFinished = TRUE
  132.     end if
  133.     
  134. else
  135.     err.raise( -1 )
  136. end if
  137.  
  138. if( bFinished ) then
  139.     Response.Redirect( "pubpoint_props.asp?server=" & g_strQueryStringServer &  "&ppID=" & g_strPubPointID & "&category=" & g_strCategory & "&instance=" & g_strEncodedInstance )
  140. end if
  141.  
  142. if( SHOWING_DISTCRED = dwDisplayMode ) then
  143.     strTitleString = L_DISTCREDENTIALSNAME_TEXT
  144.     strHelpString = L_DISTCREDHELP_TEXT
  145. elseif( SHOWING_BUFFERSETTING = dwDisplayMode ) then
  146.     strTitleString = L_BUFFPROPPAGETITLE_TEXT
  147.     strHelpString = ""
  148. end if
  149.  
  150. WriteHTMLHeader( strTitleString ) %>
  151. <% WritePluginJSUtils %>
  152. <link rel="stylesheet" type="text/css" href="<%= Session( "cssName" ) %>">
  153. <%if( SHOWING_DISTCRED = dwDisplayMode ) then %>
  154. <script language="javascript">
  155. <!--
  156. /*@cc_on @*/
  157.  
  158. ///////////////////////////
  159. function RemoveBadUsernameChars( szUnfiltered )
  160. {
  161.     <% jsTRY %>
  162.         var szSafeString = new String( szUnfiltered );
  163.         var re = /\<|\>|\"|`|!|@|#|\$|\%|\^|\||\[|\]|\;|\:|\?|\(|\)|\{|\}|\&|\u201C|\u201D|\u201E|\"\&/gim;
  164.         szSafeString = szUnfiltered.replace( re, "" );
  165.  
  166.         return( szSafeString );
  167.     <% jsCATCH %>
  168. }
  169.  
  170. var g_bUserAlertedToBadUerName = false;
  171. var g_bUserAlertedToBadPasswd = false;
  172. var g_IsValidationMutexBusy = false;
  173.  
  174. ///////////////////////////
  175. function CheckIfUserChanged()
  176. {
  177.     <% jsTRY %>
  178.         var szUser;
  179.         var szPass;
  180.         var szConfirm;
  181.  
  182.         if( document.forms.pluginForm.username.value == "<%= EscBackslashChar( Left( RemoveSpecifiedChars( SafeUnescape( trim( strUserName ) ), REGEXT_ILLEGAL_UNAME_CHARS ), MAX_USERNAME ) ) %>" )
  183.         {
  184.             return( false );
  185.         }
  186.  
  187.         if( document.forms.pluginForm.password.value == "<%= Server.HTMLEncode( L_PASSWORDPHOLD_TEXT ) %>" )
  188.         {
  189.             document.forms.pluginForm.password.value = "";
  190.             document.forms.pluginForm.confirm.value = "";
  191.             return( true );
  192.         }
  193.  
  194.         if( document.forms.pluginForm.confirm.value == "<%= Server.HTMLEncode( L_PASSWORDPHOLD_TEXT ) %>" )
  195.         {
  196.             document.forms.pluginForm.password.value = "";
  197.             document.forms.pluginForm.confirm.value = "";
  198.             return( true );
  199.         }
  200.  
  201.         szUser = new String( document.forms.pluginForm.username.value );
  202.         if( 0 == szUser.length )
  203.         {
  204.             return( true );
  205.         }
  206.     <% jsCATCH %>
  207.     return( true );
  208. }
  209.  
  210. ///////////////////////////
  211. function ValidateUserPass()
  212. {
  213.     <% jsTRY %>
  214.         var szUser = "";
  215.         var szPass = "";
  216.         var szConf = "";
  217.         var bUserOkay = true;
  218.         var bError = false;
  219.         var bUserChanged = false;
  220.  
  221.         if( true == g_IsValidationMutexBusy )
  222.         {
  223.             return( true );
  224.         }
  225.         g_IsValidationMutexBusy = true;
  226.         
  227.         document.forms.pluginForm.ok.disabled = false;
  228.         
  229.         bUserChanged = CheckIfUserChanged();
  230.         
  231.         szUser = new String( document.forms.pluginForm.username.value )
  232.         szPass = new String( document.forms.pluginForm.password.value )
  233.         szConf = new String( document.forms.pluginForm.confirm.value )
  234.  
  235.         if( ( 0 == szUser.length ) && ( 0 == szPass.length ) && ( 0 == szConf.length ) )
  236.         {
  237.             // it's legal to clear all credentials
  238.             if( false == bError )
  239.             {
  240.                 document.forms.pluginForm.ok.disabled = false;
  241.                 window.status = "";
  242.             }
  243.             g_IsValidationMutexBusy = false;
  244.             return( true );
  245.         }
  246.         
  247.         if( ( 0 == szUser.length ) || bUserChanged )
  248.         {
  249.             document.forms.pluginForm.ok.disabled = ( 0 == szUser.length ) && ( ( 0 < szPass.length ) || ( 0 < szConf.length ) );
  250.         }
  251.         
  252.         // check username
  253.         var szFilteredUser = RemoveBadUsernameChars( szUser );
  254.         if( szUser.length != szFilteredUser.length )
  255.         {
  256.             document.forms.pluginForm.username.style.color = "#FF0000";
  257.             document.forms.pluginForm.ok.disabled = true;
  258.             bError = true;
  259.             window.status = "<%= L_USERNAMEBADCHAR_TEXT %>";
  260.             if( false == g_bUserAlertedToBadUerName )
  261.             {
  262.                 g_bUserAlertedToBadUerName = true;
  263.                 window.alert( "<%= L_INVALIDCHARSINUSERNAME_TEXT %>" );
  264.             }
  265.         }
  266.         else
  267.         {
  268.             document.forms.pluginForm.username.style.color = "#000000";
  269.         }
  270.         
  271.         // if any changes to pass or confirm, wipe canned password fields
  272.         if( ( ( "<%= L_PASSWORDPHOLD_TEXT %>" == document.forms.pluginForm.password.value ) &&
  273.               ( "<%= L_PASSWORDPHOLD_TEXT %>" != document.forms.pluginForm.confirm.value ) ) ||
  274.             ( ( "<%= L_PASSWORDPHOLD_TEXT %>" != document.forms.pluginForm.password.value ) && 
  275.               ( "<%= L_PASSWORDPHOLD_TEXT %>" == document.forms.pluginForm.confirm.value ) ) )
  276.         {
  277.             document.forms.pluginForm.password.value = document.forms.pluginForm.confirm.value = "";
  278.             g_IsValidationMutexBusy = false;
  279.             return( true );
  280.         }
  281.  
  282.         // if any changes to username, wipe canned password fields
  283.         if( ( ( 0 < szConf.length ) || ( 0 < szPass.length ) ) && ( szPass.length != szConf.length ) )
  284.         {
  285.             if( ( "<%= L_PASSWORDPHOLD_TEXT %>" == document.forms.pluginForm.password.value ) || 
  286.                 ( "<%= L_PASSWORDPHOLD_TEXT %>" == document.forms.pluginForm.confirm.value ) )
  287.             {
  288.                 szPass = "";
  289.                 szConf = "";
  290.                 document.forms.pluginForm.password.value = document.forms.pluginForm.confirm.value = "";
  291.                 g_IsValidationMutexBusy = false;
  292.                 return( true );
  293.             }
  294.         }
  295.  
  296.         if( "<%= L_PASSWORDPHOLD_TEXT %>" != document.forms.pluginForm.password.value )
  297.         {
  298.             var szFilteredPass = RemoveDangerousCharacters( szPass );
  299.             if( szPass.length != szFilteredPass.length )
  300.             {
  301.                 document.forms.pluginForm.password.style.color = "#FF0000";
  302.                 document.forms.pluginForm.ok.disabled = true;
  303.                 szPass = "";
  304.                 bError = true;
  305.                 window.status = "<%= L_PASSWORDBADCHAR_TEXT %>";
  306.                 if( false == g_bUserAlertedToBadPasswd )
  307.                 {
  308.                     g_bUserAlertedToBadPasswd = true;
  309.                     window.alert( "<%= L_PASSWORDBADCHAR_TEXT %>" );
  310.                 }
  311.             }
  312.             else
  313.             {
  314.                 document.forms.pluginForm.password.style.color = "#000000";
  315.             }
  316.         }
  317.  
  318.         if( "<%= L_PASSWORDPHOLD_TEXT %>" != document.forms.pluginForm.confirm.value )
  319.         {
  320.             var szFilteredConf = RemoveDangerousCharacters( szConf );
  321.             if( szConf.length != szFilteredConf.length )
  322.             {
  323.                 document.forms.pluginForm.confirm.style.color = "#FF0000";
  324.                 document.forms.pluginForm.ok.disabled = true;
  325.                 szConf = "";
  326.                 bError = true;
  327.                 window.status = "<%= L_PASSWORDBADCHAR_TEXT %>";
  328.                 if( false == g_bUserAlertedToBadPasswd )
  329.                 {
  330.                     g_bUserAlertedToBadPasswd = true;
  331.                     window.alert( "<%= L_PASSWORDBADCHAR_TEXT %>" );
  332.                 }
  333.             }
  334.             else
  335.             {
  336.                 document.forms.pluginForm.confirm.style.color = "#000000";
  337.             }
  338.         }
  339.         
  340.         if( true == bError )
  341.         {
  342.             document.forms.pluginForm.ok.disabled = true;
  343.         }
  344.         else
  345.         {
  346.             window.status = "";
  347.             if( ( 0 == szUser.length ) && ( 0 == szPass.length ) && ( 0 == szConf.length ) )
  348.             {
  349.                 document.forms.pluginForm.ok.disabled = false;
  350.                 g_IsValidationMutexBusy = false;
  351.                 return( true );
  352.             }
  353.                 
  354.             if( ( false == bError ) && document.forms.pluginForm.password.value == document.forms.pluginForm.confirm.value )
  355.             {
  356.                 if( 0 < szUser.length )
  357.                 {
  358.                     document.forms.pluginForm.ok.disabled = false;
  359.                 }
  360.                 g_IsValidationMutexBusy = false;
  361.                 return( true );
  362.             }
  363.         }
  364.                 
  365.         document.forms.pluginForm.ok.disabled = true;
  366.         g_IsValidationMutexBusy = false;
  367.         return( true );
  368.     <% jsCATCH %>
  369. }
  370. -->
  371. </script>
  372. <% end if %>
  373. </head>
  374. <body class="pluginBody" width="100%" <%if( SHOWING_DISTCRED = dwDisplayMode ) then %> onLoad="JavaScript:ValidateUserPass();"<% end if %> oncontextmenu="JavaScript:event.cancelBubble=true;return false;">
  375. <% 
  376. tabIndex = 0
  377. DrawPropPageBanner strTitleString
  378. WriteStdPluginForm 
  379. %>
  380. <table border=0 cellpadding=0 cellspacing=0 width="90%">
  381. <tr>
  382.     <td>
  383.          
  384.     </td>
  385.     <td valign="top">
  386.         <p> <br>
  387.         <table class="propgroupbox" cellspacing=1 cellpadding=0 border=0 width="90%">
  388.         <tr>
  389.             <td colspan=3>
  390. <% if( SHOWING_BUFFERSETTING = dwDisplayMode ) then %>
  391.                 <div class="subheader"><%= Server.HTMLEncode( L_BUFFERSPOPTIONS_TEXT ) %></div><br>
  392. <% else %>
  393.                 <div class="helptext"><%= Server.HTMLEncode( strHelpString ) %></div><br>
  394. <% end if %>
  395.         <%
  396.         if( SHOWING_DISTCRED = dwDisplayMode ) then
  397.         %>
  398.             </td>
  399.         </tr>
  400.         <tr>
  401.             <td class="defaultcursor" nowrap>
  402.             <% RenderWithErrorCheck Server.HTMLEncode( L_USERNAMECOLON_TEXT ), "User" %>
  403.             </td>
  404.         </tr>
  405.         <tr>
  406.             <td align=left>
  407.                 <input 
  408.                     type="text" 
  409.                     name="username" 
  410.                     size="25" 
  411.                     maxlength="<%= Server.HTMLEncode( MAX_USERNAME ) %>"
  412.                     tabindex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> 
  413.                     value="<%= strUserName %>" 
  414.                     onKeyUp="JavaScript:ValidateUserPass();" 
  415.                     onKeyDown="JavaScript:ValidateUserPass();" 
  416.                     onChange="JavaScript:ValidateUserPass();"
  417.                     onPaste="JavaScript:ValidateUserPass();" >
  418.             </td>
  419.         </tr>
  420.         <tr>
  421.             <td class="defaultcursor" nowrap>
  422.             <% RenderWithErrorCheck Server.HTMLEncode( L_PASSWORDCOLON_TEXT ), "Pass" %>
  423.             </td>
  424.         </tr>
  425.         <tr>
  426.             <td align=left>
  427.                 <input 
  428.                     type="password" 
  429.                     name="password" 
  430.                     size="25"
  431.                     maxlength="<%= Server.HTMLEncode( MAX_PASSWD ) %>"
  432.                     tabindex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> 
  433.                     value="<%= strPassword %>" 
  434.                     onKeyUp="JavaScript:ValidateUserPass();" 
  435.                     onKeyDown="JavaScript:ValidateUserPass();" 
  436.                     onChange="JavaScript:ValidateUserPass();"
  437.                     onPaste="JavaScript:ValidateUserPass();" >
  438.             </td>
  439.         </tr>
  440.         <tr>
  441.             <td class="defaultcursor" nowrap>
  442.             <% RenderWithErrorCheck Server.HTMLEncode( L_CONFIRMCOLON_TEXT ), "Confirm" %>
  443.             </td>
  444.         </tr>
  445.         <tr>
  446.             <td align=left>
  447.                 <input 
  448.                     type="password" 
  449.                     name="confirm" 
  450.                     size="25" 
  451.                     maxlength="<%= Server.HTMLEncode( MAX_PASSWD ) %>"
  452.                     tabindex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> 
  453.                     value="<%= strConfirm %>" 
  454.                     onKeyUp="JavaScript:ValidateUserPass();" 
  455.                     onKeyDown="JavaScript:ValidateUserPass();" 
  456.                     onChange="JavaScript:ValidateUserPass();"
  457.                     onPaste="JavaScript:ValidateUserPass();" >
  458.             </td>
  459.         </tr>
  460.         </table>
  461.         <br>
  462.         <%
  463.         elseif( SHOWING_BUFFERSETTING = dwDisplayMode ) then
  464.             enumBufferSetting = g_objPubPoint.BufferSetting 
  465.             bBufferOnServer = CBool( 1 = CDbl( enumBufferSetting ) )
  466.         %>
  467.         <table cellspacing=1 cellpadding=0 border=0>
  468.         <tr>
  469.             <td> </td>
  470.             <td>
  471.                 <div class="propshand">
  472.                 <input type="radio"
  473.                        name="buffering"
  474.                        value="1"
  475.                        id="buffering1"
  476.                         <% 
  477.                         if bBufferOnServer then %> checked <% end if %>
  478.                        tabindex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> 
  479.                 >
  480.                 </div>
  481.             </td>
  482.             <td>
  483.                 <label for="buffering1" class="propshand"><% RenderWithErrorCheck Server.HTMLEncode( L_BUFFEROPT1_TEXT ), "enable" %></label>
  484.             </td>
  485.         </tr>
  486.         <tr>
  487.             <td> </td>
  488.             <td>
  489.                 <div class="propshand">
  490.                 <input type="radio"
  491.                        name="buffering"
  492.                        value="2"
  493.                        id="buffering2"
  494.                         <% if not bBufferOnServer then %> checked <% end if %>
  495.                        tabindex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> 
  496.                 >
  497.                 </div>
  498.             </td>
  499.             <td>
  500.                 <label for="buffering2" class="propshand"><% RenderWithErrorCheck Server.HTMLEncode( L_BUFFEROPT2_TEXT ), "disable" %></label>
  501.             </td>
  502.         </tr>
  503.         </table>
  504.         <br>
  505.         <%
  506.         end if %>
  507.     </td>
  508. </tr>
  509. </table>
  510. <table cellspacing="0" cellpadding="0" border="0">
  511. <tr>
  512.     <td valign="bottom">
  513.         <br>
  514.         <input type="submit" align="baseline" name="ok" id="ok" tabIndex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> value="<%= Server.HTMLEncode( L_OKAYBUTTON_TEXT ) %>"> 
  515.         <input type="button" align="baseline" name="cancel" tabIndex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> onclick="JavaScript:Cancel();" value="<%= Server.HTMLEncode( L_CANCELBUTTONSPACED_TEXT ) %>"> 
  516. <% if ( SHOWING_DISTCRED = dwDisplayMode ) then %>
  517.         <input type="button" align="baseline" name="help" tabIndex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> onclick="JavaScript:DoPluginHelp( '<%= H_NETCREDHELPTOPIC %>' )" value="<%= Server.HTMLEncode( L_HELPBUTTONSPACED_TEXT ) %>" id="help">
  518. <% elseif( SHOWING_BUFFERSETTING = dwDisplayMode ) then %>
  519.         <input type="button" align="baseline" name="help" tabIndex="<%= dwTabIndex %>"<% dwTabIndex = dwTabIndex + 1 %> onclick="JavaScript:DoPluginHelp( '<%= H_BUFFERINGHELPTOPIC %>' )" value="<%= Server.HTMLEncode( L_HELPBUTTONSPACED_TEXT ) %>" id="help">
  520. <% end if %>
  521.     </td>
  522. </tr>
  523. </table>
  524. </form>
  525. <%
  526. AlertUserWithPopupErrorDialog
  527. OnErrorGoBack 
  528. DrawCopyrightInfo
  529. DrawStdFooter
  530. %>
  531. </body>
  532. </html>
  533. <% 
  534. LatchCurrentPage "pubpoints/networking.asp", qs
  535. EndErrorHandling "Networking.asp" 
  536.  
  537. PluginsASPCleanup
  538. %>